package com.wyy.mall.tiny.mbg;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * 用于生产mbg的代码，也就是说mybatis可以根据数据中的表来生成表对应的实体类和操作语句
 * created by 伍猷煜 on 2021/5/7 21:26 星期五
 */
public class Generator {
    public static void main(String[] args) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
        // mbg执行过程中的警告信息
        List<String> warnings = new ArrayList<>();
        // 生成的代码重复时，覆盖源代码
        boolean overwrite = true;
        // 读取mbg配置文件
        InputStream in = Generator.class.getResourceAsStream("/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(in);
        in.close();

        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        // 创建mbg
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        // 执行生成代码
        myBatisGenerator.generate(null);
        warnings.forEach(System.out::println);
    }
}
